package com.ash.service.order;

import com.ash.domain.Order;
import com.ash.domain.vo.ChartVo;
import com.ash.domain.vo.OrderDetailVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.lang.Nullable;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

/**
 * @author : Chen Chao
 * @encoding : UTF-8
 * @date : 2021/4/13 17:49
 * @file : project06.com.ash.service.order.OrderService.java
 * @software : IntelliJ IDEA
 * @since : 1.8
 */
public interface OrderService {
    /**
     * 添加订单
     * @param order 要添加的订单
     * @return 受影响的行数
     */
    Integer add(Order order);

    /**
     * 根据uid查询订单列表
     * @param uid 要查询的uid
     * @param page 起始位置
     * @param size  页面容量
     * @return 订单列表
     */
    List<Order> selectByUid(
            @Nullable @Param("uid") Integer uid,
            @Nullable @Param("startIndex") Integer page,
            @Nullable @Param("size") Integer size);

    /**
     * 查询uid下订单的数量
     * @param uid 要查询订单数量的uid
     * @return 订单的数量
     */
    Integer dataCount (@Nullable @RequestParam("uid")Integer uid);
    /**
     * 把购物车列表信息添加到订单详情里面
     * @param chartVos 购物车列表信息
     * @param oid 订单id
     * @return 受影响的行数
     */
    Integer addDetail(@Param("chartsVo")List<ChartVo> chartVos, @Param("oid")Integer oid);
    /**
     * 根据oid查询订单详情
     * @param oid oid
     * @return 返回detail列表
     */
    List<OrderDetailVo> selectDetailByOid(@Param("oid")Integer oid);
}
